home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / network / daemons / nfs / nfs-serv.2be / nfs-serv / nfs-server-2.2beta16 / system.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-02-28  |  5.4 KB  |  260 lines

  1. /*
  2.  * system.h -- this header consolidates many of the system dependencies
  3.  * Public Domain.
  4.  */
  5.  
  6. #ifndef SYSTEM_H
  7. #define SYSTEM_H
  8.  
  9. #ifdef HAVE_CONFIG_H
  10. #include <config.h>
  11. #endif
  12. #include "site.h"
  13.  
  14. #ifdef __STDC__
  15. #   define _PRO(f, a)    f a
  16. #else
  17. #   define _PRO(f, a)    f ()
  18. #endif
  19.  
  20. #include <sys/types.h>
  21.  
  22. /* unistd.h defines _POSIX_VERSION on POSIX.1 systems.  */
  23. #if defined(HAVE_UNISTD_H) || defined(STDC_HEADERS)
  24. # include <unistd.h>
  25. #endif
  26.  
  27. #ifdef STDC_HEADERS
  28. # include <stdlib.h>
  29. #endif
  30.  
  31. #ifdef _POSIX_VERSION
  32. # include <limits.h>
  33. #else
  34. # include <sys/param.h>
  35. #endif
  36.  
  37. #include <sys/stat.h>
  38. #include <sys/ioctl.h>
  39. #include <sys/socket.h>
  40. #include <stdio.h>
  41.  
  42. #include <rpc/rpc.h>
  43. #ifndef HAVE_XDRPROC_T
  44. #ifdef __STDC__
  45. typedef bool_t    (*xdrproc_t)(XDR *, void *, ...);
  46. #else
  47. typedef bool_t    (*xdrproc_t)();
  48. #endif
  49. #endif
  50.  
  51. #include <ctype.h>
  52. #include <errno.h>
  53. #ifdef HAVE_FCNTL_H
  54. # include <fcntl.h>
  55. #endif
  56. #include <netdb.h>            /* needed for gethostbyname */
  57. #include <netinet/in.h>
  58. #undef NOERROR                /* blasted sysv4 */
  59. #include <arpa/nameser.h>        /* needed for <resolv.h> */
  60. #include <arpa/inet.h>            /* for inet_ntoa(3) */
  61. #include <resolv.h>            /* needed for h_errno */
  62. #include <signal.h>
  63.  
  64. #ifdef __STDC__
  65. # include <stdarg.h>            /* needed for va_arg et al */
  66. #else
  67. # include <varargs.h>
  68. #endif
  69.  
  70. #ifdef _POSIX_VERSION
  71. # include <pwd.h>            /* for getpwuid */
  72. # include <grp.h>            /* for setgroups */
  73. #endif
  74.  
  75. #ifdef TIME_WITH_SYS_TIME
  76. # include <sys/time.h>
  77. # include <time.h>
  78. #else /* not TIME_WITH_SYS_TIME */
  79. # ifdef HAVE_SYS_TIME_H
  80. #  include <sys/time.h>
  81. # else /* not HAVE_SYS_TIME_H */
  82. #  include <time.h>
  83. struct timeval {
  84.     long tv_sec;
  85.     long tv_usec;
  86. };
  87. # endif /* not HAVE_SYS_TIME_H */
  88. #endif /* not TIME_WITH_SYS_TIME */
  89. #ifdef HAVE_SYS_FILE_H
  90. # include <sys/file.h>
  91. #endif
  92.  
  93. #ifdef MAJOR_IN_MKDEV
  94. # include <sys/mkdev.h>
  95. #endif
  96. #ifdef MAJOR_IN_SYSMACROS
  97. # include <sys/sysmacros.h>
  98. #endif
  99.  
  100. #if defined(STDC_HEADERS) || defined(HAVE_STRING_H)
  101. # include <string.h>
  102. /* An ANSI string.h and pre-ANSI memory.h might conflict.  */
  103. # if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H)
  104. #  include <memory.h>
  105. # endif /* not STDC_HEADERS and HAVE_MEMORY_H */
  106. #else /* not STDC_HEADERS and not HAVE_STRING_H */
  107. # include <strings.h>
  108. /* memory.h and strings.h conflict on some systems.  */
  109. # ifndef strchr
  110. #  define strchr(s, c) index((s), (c))
  111. # endif
  112. # ifndef strrchr
  113. #  define strrchr(s, c) rindex((s), (c))
  114. # endif
  115. # ifndef memcpy
  116. #  define memcpy(d, s, n) bcopy((s), (d), (n))
  117. # endif
  118. # ifndef memcmp
  119. #  define memcmp(s1, s2, n) bcmp((s1), (s2), (n))
  120. # endif
  121. # ifndef memset
  122. #  define memset(s, c, n) \
  123.     do {                        \
  124.         char *_s = (s);                \
  125.         int _c = (c);                \
  126.         int _n = (n);                \
  127.         int _i;                    \
  128.                             \
  129.         if (_c == 0)                \
  130.             bzero(_s, _n);            \
  131.         else                    \
  132.             for (_i = 0; _i < _n; _i++)    \
  133.                 *_s++ = _c;        \
  134.     } while (0)
  135. # endif
  136. #endif /* not STDC_HEADERS and not HAVE_STRING_H */
  137.  
  138. _PRO(void *xmalloc,    (unsigned n));
  139. _PRO(void *xrealloc,    (void *ptr, unsigned n));
  140. _PRO(char *xstrdup,    (const char *str));
  141.  
  142. #if HAVE_DIRENT_H || defined(_POSIX_VERSION)
  143. # include <dirent.h>
  144. # define NLENGTH(dirent) (strlen((dirent)->d_name))
  145. #else /* not (HAVE_DIRENT_H or _POSIX_VERSION) */
  146. # define dirent direct
  147. # define NLENGTH(dirent) ((dirent)->d_namlen)
  148. # if HAVE_SYS_NDIR_H
  149. #  include <sys/ndir.h>
  150. # endif /* HAVE_SYS_NDIR_H */
  151. # ifdef HAVE_SYS_DIR_H
  152. #  include <sys/dir.h>
  153. # endif /* HAVE_SYS_DIR_H */
  154. # ifdef HAVE_NDIR_H
  155. #  include <ndir.h>
  156. # endif /* HAVE_NDIR_H */
  157. #endif /* not (HAVE_DIRENT_H or _POSIX_VERSION) */
  158.  
  159. #ifdef __GNUC__
  160. # ifndef __STDC__
  161. #  define inline __inline__
  162. # endif
  163. #else
  164. # define inline
  165. #endif
  166.  
  167. #ifndef S_IFMT
  168. # define S_IFMT 0170000
  169. #endif
  170.  
  171. #ifdef STAT_MACROS_BROKEN
  172. # undef S_ISBLK
  173. # undef S_ISCHR
  174. # undef S_ISDIR
  175. # undef S_ISREG
  176. # undef S_ISFIFO
  177. # undef S_ISLNK
  178. # undef S_ISSOCK
  179. #endif /* STAT_MACROS_BROKEN */
  180.  
  181. #if !defined(S_ISBLK) && defined(S_IFBLK)
  182. # define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
  183. #endif
  184. #if !defined(S_ISCHR) && defined(S_IFCHR)
  185. # define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
  186. #endif
  187. #if !defined(S_ISDIR) && defined(S_IFDIR)
  188. # define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
  189. #endif
  190. #if !defined(S_ISREG) && defined(S_IFREG)
  191. # define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
  192. #endif
  193. #if !defined(S_ISFIFO) && defined(S_IFFIFO)
  194. # define S_ISFIFO(m) (((m) & S_IFMT) == S_IFFIFO)
  195. #endif
  196. #if !defined(S_ISLNK) && defined(S_IFLNK)
  197. # define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
  198. #endif
  199. #if !defined(S_ISSOCK) && defined(S_IFSOCK)
  200. # define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
  201. #endif
  202.  
  203. #ifndef S_ISLNK
  204. # define lstat stat
  205. #endif
  206.  
  207. #ifndef HAVE_LCHOWN
  208. # define lchown chown
  209. #endif
  210.  
  211. #ifndef F_OK
  212. # define F_OK 0
  213. # define X_OK 1
  214. # define W_OK 2
  215. # define R_OK 4
  216. #endif
  217.  
  218. #if !defined(HAVE_SETEUID) && defined(HAVE_SETREUID)
  219. # define seteuid(e) setreuid(((uid_t) -1), (e))
  220. # define setegid(e) setregid(((gid_t) -1), (e))
  221. #endif
  222.  
  223. #if !defined(getdtablesize) && !defined(HAVE_GETDTABLESIZE)
  224. # ifdef FILE_MAX
  225. #  define getdtablesize() FILE_MAX
  226. # else
  227. #  define getdtablesize() 20
  228. # endif
  229. #endif
  230.  
  231. #ifndef HAVE_ST_RDEV
  232. # define st_rdev st_size
  233. #endif
  234.  
  235. #ifndef PATH_MAX
  236. # ifdef _POSIX_VERSION
  237. #  define PATH_MAX _POSIX_PATH_MAX
  238. # else
  239. #  ifdef MAXPATHLEN
  240. #   define PATH_MAX MAXPATHLEN
  241. #  else
  242. #   define PATH_MAX 1024
  243. #  endif
  244. # endif
  245. #endif
  246.  
  247. #ifndef NAME_MAX
  248. # ifdef _POSIX_VERSION
  249. #  define NAME_MAX _POSIX_NAME_MAX
  250. # else
  251. #  ifdef MAXNAMLEN
  252. #   define NAME_MAX MAXNAMLEN
  253. #  else
  254. #   define NAME_MAX 255
  255. #  endif
  256. # endif
  257. #endif
  258.  
  259. #endif /* SYSTEM_H */
  260.